package cn.edu.cdu.health.controller;

import cn.edu.cdu.health.common.BizException;
import cn.edu.cdu.health.common.R;
import cn.edu.cdu.health.entity.PageDto;
import cn.edu.cdu.health.entity.PageResult;
import cn.edu.cdu.health.entity.User;
import cn.edu.cdu.health.service.UserService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    //自动装配/依赖注入，


    //指定参数
    //把对象作为返回值，对象会先通过序列化转换成json字符串，再返回给前端
    @GetMapping("/getById")
    @ResponseBody   //把当前方法的返回信息组装为json格式
    public R getById(Integer id){

        User byId = null;
        try {
            byId = userService.getById(id);
        } catch (BizException e) {
            throw new RuntimeException(e);
        }
        return R.ok(byId);
    }

    //http://localhost:8080/user/login?phone=13512345678&password=123
    @GetMapping("/login")
    public R login(String phone,String password){
        return R.ok();
    }

    //多个参数的情况：用户在注册的时候，需要提供姓名、手机号、邮箱、用户密码......
    //声明一个类User，把用户信息作为该类的成员字段
    @PostMapping("/register")
    public R register(@RequestBody User user)
    {
        user.setId(1001);
        return R.ok(user);
    }

    @PostMapping("/selectByPage")
    public R selectByPage(@RequestBody PageDto pageDto){
        IPage<User> page =new Page<>(pageDto.getCurrent(),pageDto.getSize());
        userService.page(page);

        List<User> records =page.getRecords();
        long total = page.getTotal();

        PageResult pageResult= new PageResult();
        pageResult.setRecords(records);
        pageResult.setTotal(total);
        return R.ok(pageResult);
    }

}
